package tools

import (
	"fmt"
	"io/ioutil"
	"path"
	"path/filepath"
	"reflect"
	"runtime"
	"strings"
)

/**
 * @author ljfirst
 * @version V1.0
 * @date 2023/9/11 17:36
 * @author-Email ljfirst@mail.ustc.edu.cn
 * @blogURL https://blog.csdn.net/ljfirst
 * @description
 **/

// grammar路径: 获取相对路径
func GetDBFilePath() string {
	pPath := GetProjectPath()
	if pPath != "" {
		return pPath + "/integration/db/db_entity"
	}
	return pPath
}

func GetProjectPath() string {
	abPath := ""
	_, filename1, _, ok := runtime.Caller(0)
	if ok {
		abPath = path.Dir(filename1)
		return abPath + "/../.."
	}
	return abPath
}


func GetPathStruct(pathStr string) {
	// 获取路径下的所有文件和目录
	files, err := ioutil.ReadDir(pathStr)
	if err != nil {
		fmt.Println(err)
		return
	}

	// 遍历文件和目录
	for _, file := range files {
		// 如果是文件，判断是否是struct文件
		if file.IsDir() {
			continue
		}

		// 获取文件名
		filename := filepath.Join(pathStr, file.Name())

		// 读取文件内容
		//b, err := ioutil.ReadFile(filename)
		_, err := ioutil.ReadFile(filename)
		if err != nil {
			fmt.Println(err)
			return
		}

		// 解析文件内容，获取struct
		structType := reflect.New(reflect.TypeOf(struct{}{})).Elem()
		//err = structType.Unmarshal(b)
		if err != nil {
			fmt.Println(err)
			return
		}

		// 打印struct
		fmt.Println(structType)
	}
}


// PathProcessing 路径处理
func PathProcessing(path string) bool {
	a := strings.Split(path, "/")
	if len(a) >= 2 && a[1] != "" {
		return false
	} else {
		return true
	}
}